﻿using System.ComponentModel.DataAnnotations;
using YNTK.Dependency;

namespace YNTK.System.Entitys.Dto.Common
{
    /// <summary>
    /// 文件上传成功后返回信息传输模型
    /// </summary>
    [SuppressSniffer]
    public class ReturnUploadFileDto
    {
        /// <summary>
        /// 文件id
        /// </summary>
        public string fileId { get; set; }

        /// <summary>
        /// 文件名称
        /// </summary>
        public string fileName { get; set; }

        /// <summary>
        /// 存储文件名
        /// </summary>
        public string saveFileName { get; set; }

        /// <summary>
        /// 文件后缀
        /// </summary>
        public string extension { get; set; }

        /// <summary>
        /// 文件大小
        /// </summary>
        public long size { get; set; }

        /// <summary>
        /// 文件大小以B，KB，GB，TB形式显示
        /// </summary>
        public string fileSize { get; set; }

        /// <summary>
        /// 文件存储目录
        /// </summary>
        public string fileDirectory { get; set; }

        /// <summary>
        /// 文件存储路径,存储目录/存储文件名
        /// </summary>
        public string storagePath { get; set; }
    }

    /// <summary>
    /// 文件数据传输模型
    /// </summary>
    [SuppressSniffer]
    public class FileListDto: ReturnUploadFileDto
    {

    }

    /// <summary>
    /// 分片文件上传响应模型
    /// </summary>
    public class SliceFileResponseDto
    {
        /// <summary>
        /// 原文件名称
        /// </summary>
        public string fileName { get; set; }

        /// <summary>
        /// 原文件后缀
        /// </summary>
        public string extension { get; set; }

        /// <summary>
        /// 合并后文件id
        /// </summary>
        public string fileId { get; set; }

        /// <summary>
        /// 合并文件大小
        /// </summary>
        public long size { get; set; }

        /// <summary>
        /// 合并文件大小以B，KB，GB，TB形式显示
        /// </summary>
        public string fileSize { get; set; }

        /// <summary>
        /// 分片文件存储目录
        /// </summary>
        public string storageDirectory { get; set; }

        /// <summary>
        /// 合并后存储文件名
        /// </summary>
        public string saveFileName { get; set; }

        /// <summary>
        /// 合并后文件存储目录
        /// </summary>
        public string fileDirectory { get; set; }

        /// <summary>
        /// 合并文件存储路径,存储目录/存储文件名
        /// </summary>
        public string storagePath { get; set; }

        /// <summary>
        /// 当前分片文件名称
        /// </summary>
        public string name { get; set; }

        /// <summary>
        /// 分片上传是否完成
        /// </summary>
        public bool completed { get; set; }

        /// <summary>
        /// 当前分块序号
        /// </summary>
        public int number { get; set; }

        /// <summary>
        /// 所有块数
        /// </summary>
        public int count { get; set; }
    }

    /// <summary>
    /// 分片文件信息请求模型
    /// </summary>
    [SuppressSniffer]
    public class SliceFileRequestModel
    {
        /// <summary>
        /// 分片文件存储目录,第一片是空的,从第二片开始传上一片后端返回的值
        /// </summary>
        public string storageDirectory { get; set; }

        /// <summary>
        /// 合并文件id,第一片是空的,从第二片开始传上一片后端返回的值
        /// </summary>
        public string fileId { get; set; }

        /// <summary>
        /// 合并后存储文件名,第一片是空的,从第二片开始传上一片后端返回的值
        /// </summary>
        public string saveFileName { get; set; }

        /// <summary>
        /// 合并后文件存储目录,第一片是空的,从第二片开始传上一片后端返回的值
        /// </summary>
        public string fileDirectory { get; set; }

        /// <summary>
        /// 当前分块序号,第一片是0
        /// </summary>
        [Required(ErrorMessage = "当前分块序号不能为空")]
        public int number { get; set; }

        /// <summary>
        /// 所有块数
        /// </summary>
        [MinLength(2,ErrorMessage ="总块数至少为2块")]
        public int count { get; set; }
    }

    /// <summary>
    /// 分片文件排序
    /// </summary>
    [SuppressSniffer]
    public class FileSort
    {
        /// <summary>
        /// 文件名称
        /// </summary>
        public string name { get; set; }

        /// <summary>
        /// 分片序号
        /// </summary>
        public int number { get; set; }
    }

    /// <summary>
    /// 获取缩略图请求模型
    /// </summary>
    [SuppressSniffer]
    public class GetThumbnailRequestModel
    {
        /// <summary>
        /// 文件存储路径,存储目录/存储文件名
        /// </summary>
        [Required(ErrorMessage = "文件存储路径不可以为空")]
        public string storagePath { get; set; }

        /// <summary>
        /// 宽度
        /// </summary>
        [Required(ErrorMessage = "宽度不可以为空")]
        public int width { get; set; }

        /// <summary>
        /// 高度
        /// </summary>
        [Required(ErrorMessage = "高度不可以为空")]
        public int height { get; set; }
    }

    /// <summary>
    /// 大文件分片下载请求模型
    /// </summary>
    [SuppressSniffer]
    public class FileDownloadRequestModel
    {
        /// <summary>
        /// 当前分片序号,第一片是0
        /// </summary>
        [Required(ErrorMessage = "当前分片序号不能为空")]
        public int number { get; set; }

        /// <summary>
        /// 文件存储路径,存储目录/存储文件名
        /// </summary>
        [Required(ErrorMessage = "文件存储路径不能为空")]
        public string storagePath { get; set; }
    }

    /// <summary>
    /// 图片base64 mongodb缓存
    /// </summary>
    [SuppressSniffer]
    public class ImageBase64
    {
        /// <summary>
        /// id
        /// </summary>
        public string id { get; set; }

        /// <summary>
        /// 图片存储路径
        /// </summary>
        public string storagePath { get; set; }

        /// <summary>
        /// base64
        /// </summary>
        public string baser64 { get; set; }
    }

}
